user42: I have a few useful I2C components, such as a 16-bit port expander (MCP23017), which I'd like to use in various projects.
What do I need to do to make these work with Arduino? Will it work with any Arduino, or do I need a specific board or shield?

user89: Additional shields are not needed.
You only need the Wire library and a couple of wires to connect the device to SDA and SCL.
The position of these pins is different on the various Arduinos, please have a look here.

user14984: For future readers: use the Adafruit_MCP23017 library.

user3: Arduino have the Wire Library that communicate with I2C.

This library allows you to communicate with I2C / TWI devices. On the
  Arduino boards with the R3 layout (1.0 pinout), the SDA (data line)
  and SCL (clock line) are on the pin headers close to the AREF pin. The
  Arduino Due has two I2C / TWI interfaces SDA1 and SCL1 are near to the
  AREF pin and the additional one is on pins 20 and 21. As a reference
  the table below shows where TWI pins are located on various Arduino
  boards.

Board   I2C / TWI pins

Uno, Ethernet    A4 (SDA), A5 (SCL)
Mega2560 20 (SDA), 21 (SCL)
Leonardo 2 (SDA), 3 (SCL)
Due  20 (SDA), 21 (SCL), SDA1, SCL1

You can take a look at , this examples.
Like @TheDoctor said:

The I2C data lines both need resistors to 3.3V. This keeps them from
  drifting if they are disabled. Andy resistor value should work, but it
  is recommended to use one between 10k ohm and 47k ohm.


42: <p>I have a few useful I2C components, such as a 16-bit port expander (MCP23017), which I'd like to use in various projects.</p>

<p>What do I need to do to make these work with Arduino? Will it work with any Arduino, or do I need a specific board or shield?</p>
 89: <p>Additional shields are not needed.</p>

<p>You only need the Wire library and a couple of wires to connect the device to <strong>SDA</strong> and <strong>SCL</strong>.</p>

<p>The position of these pins is different on the various Arduinos, please have a look <a href="http://arduino.cc/de/Reference/Wire" rel="nofollow">here</a>.</p>
 14984: <p>For future readers: use the Adafruit_MCP23017 library.</p>
 3: <p>Arduino have the <a href="http://www.arduino.cc/en/Reference/Wire" rel="nofollow noreferrer">Wire Library</a> that communicate with I2C.</p>

<blockquote>
  <p>This library allows you to communicate with I2C / TWI devices. On the
  Arduino boards with the R3 layout (1.0 pinout), the SDA (data line)
  and SCL (clock line) are on the pin headers close to the AREF pin. The
  Arduino Due has two I2C / TWI interfaces SDA1 and SCL1 are near to the
  AREF pin and the additional one is on pins 20 and 21. As a reference
  the table below shows where TWI pins are located on various Arduino
  boards.</p>
</blockquote>

<p>Board   I2C / TWI pins</p>

<ul>
<li>Uno, Ethernet    A4 (SDA), A5 (SCL)</li>
<li>Mega2560 20 (SDA), 21 (SCL)</li>
<li>Leonardo 2 (SDA), 3 (SCL)</li>
<li>Due  20 (SDA), 21 (SCL), SDA1, SCL1</li>
</ul>

<p>You can take a look at , <a href="http://www.instructables.com/id/I2C-between-Arduinos/" rel="nofollow noreferrer">this</a> examples.</p>

<p>Like @TheDoctor said:</p>

<blockquote>
  <p>The I2C data lines both need resistors to 3.3V. This keeps them from
  drifting if they are disabled. Andy resistor value should work, but it
  is recommended to use one between 10k ohm and 47k ohm.</p>
</blockquote>
